home *** CD-ROM | disk | FTP | other *** search
- package java.security;
-
- import java.util.Enumeration;
- import java.util.WeakHashMap;
- import sun.security.jca.GetInstance;
- import sun.security.provider.PolicyFile;
- import sun.security.util.Debug;
- import sun.security.util.SecurityConstants;
-
- public abstract class Policy {
- public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION = new UnsupportedEmptyCollection();
- private static Policy policy;
- private static final Debug debug = Debug.getInstance("policy");
- private WeakHashMap pdMapping;
-
- static boolean isSet() {
- return policy != null;
- }
-
- private static void checkPermission(String var0) {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkPermission(new SecurityPermission("createPolicy." + var0));
- }
-
- }
-
- public static Policy getPolicy() {
- SecurityManager var0 = System.getSecurityManager();
- if (var0 != null) {
- var0.checkPermission(SecurityConstants.GET_POLICY_PERMISSION);
- }
-
- return getPolicyNoCheck();
- }
-
- static synchronized Policy getPolicyNoCheck() {
- if (policy == null) {
- Object var0 = null;
- String var5 = (String)AccessController.doPrivileged(new 1());
- if (var5 == null) {
- var5 = "sun.security.provider.PolicyFile";
- }
-
- try {
- policy = (Policy)Class.forName(var5).newInstance();
- } catch (Exception var4) {
- policy = new PolicyFile();
- Policy var3 = (Policy)AccessController.doPrivileged(new 2(var5));
- if (var3 != null) {
- policy = var3;
- } else if (debug != null) {
- debug.println("using sun.security.provider.PolicyFile");
- }
- }
- }
-
- return policy;
- }
-
- public static void setPolicy(Policy var0) {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkPermission(new SecurityPermission("setPolicy"));
- }
-
- if (var0 != null) {
- initPolicy(var0);
- }
-
- synchronized(Policy.class) {
- policy = var0;
- }
- }
-
- private static void initPolicy(Policy var0) {
- ProtectionDomain var1 = (ProtectionDomain)AccessController.doPrivileged(new 3(var0));
- Object var2 = null;
- synchronized(var0) {
- if (var0.pdMapping == null) {
- var0.pdMapping = new WeakHashMap();
- }
- }
-
- if (var1.getCodeSource() != null) {
- if (isSet()) {
- var2 = policy.getPermissions(var1);
- }
-
- if (var2 == null) {
- var2 = new Permissions();
- ((PermissionCollection)var2).add(SecurityConstants.ALL_PERMISSION);
- }
-
- synchronized(var0.pdMapping) {
- var0.pdMapping.put(var1, var2);
- }
- }
-
- }
-
- public static Policy getInstance(String var0, Parameters var1) throws NoSuchAlgorithmException {
- checkPermission(var0);
-
- try {
- GetInstance.Instance var2 = GetInstance.getInstance("Policy", PolicySpi.class, var0, var1);
- return new PolicyDelegate((PolicySpi)var2.impl, var2.provider, var0, var1, (1)null);
- } catch (NoSuchAlgorithmException var3) {
- return handleException(var3);
- }
- }
-
- public static Policy getInstance(String var0, Parameters var1, String var2) throws NoSuchProviderException, NoSuchAlgorithmException {
- if (var2 != null && var2.length() != 0) {
- checkPermission(var0);
-
- try {
- GetInstance.Instance var3 = GetInstance.getInstance("Policy", PolicySpi.class, var0, var1, var2);
- return new PolicyDelegate((PolicySpi)var3.impl, var3.provider, var0, var1, (1)null);
- } catch (NoSuchAlgorithmException var4) {
- return handleException(var4);
- }
- } else {
- throw new IllegalArgumentException("missing provider");
- }
- }
-
- public static Policy getInstance(String var0, Parameters var1, Provider var2) throws NoSuchAlgorithmException {
- if (var2 == null) {
- throw new IllegalArgumentException("missing provider");
- } else {
- checkPermission(var0);
-
- try {
- GetInstance.Instance var3 = GetInstance.getInstance("Policy", PolicySpi.class, var0, var1, var2);
- return new PolicyDelegate((PolicySpi)var3.impl, var3.provider, var0, var1, (1)null);
- } catch (NoSuchAlgorithmException var4) {
- return handleException(var4);
- }
- }
- }
-
- private static Policy handleException(NoSuchAlgorithmException var0) throws NoSuchAlgorithmException {
- Throwable var1 = var0.getCause();
- if (var1 instanceof IllegalArgumentException) {
- throw (IllegalArgumentException)var1;
- } else {
- throw var0;
- }
- }
-
- public Provider getProvider() {
- return null;
- }
-
- public String getType() {
- return null;
- }
-
- public Parameters getParameters() {
- return null;
- }
-
- public PermissionCollection getPermissions(CodeSource var1) {
- return UNSUPPORTED_EMPTY_COLLECTION;
- }
-
- public PermissionCollection getPermissions(ProtectionDomain var1) {
- Object var2 = null;
- if (var1 == null) {
- return new Permissions();
- } else {
- if (this.pdMapping == null) {
- initPolicy(this);
- }
-
- PermissionCollection var9;
- synchronized(this.pdMapping) {
- var9 = (PermissionCollection)this.pdMapping.get(var1);
- }
-
- if (var9 != null) {
- Permissions var3 = new Permissions();
- synchronized(var9) {
- Enumeration var5 = var9.elements();
-
- while(var5.hasMoreElements()) {
- var3.add((Permission)var5.nextElement());
- }
-
- return var3;
- }
- } else {
- var9 = this.getPermissions(var1.getCodeSource());
- if (var9 == null || var9 == UNSUPPORTED_EMPTY_COLLECTION) {
- var9 = new Permissions();
- }
-
- this.addStaticPerms(var9, var1.getPermissions());
- return var9;
- }
- }
- }
-
- private void addStaticPerms(PermissionCollection var1, PermissionCollection var2) {
- if (var2 != null) {
- synchronized(var2) {
- Enumeration var4 = var2.elements();
-
- while(var4.hasMoreElements()) {
- var1.add((Permission)var4.nextElement());
- }
- }
- }
-
- }
-
- public boolean implies(ProtectionDomain var1, Permission var2) {
- if (this.pdMapping == null) {
- initPolicy(this);
- }
-
- PermissionCollection var3;
- synchronized(this.pdMapping) {
- var3 = (PermissionCollection)this.pdMapping.get(var1);
- }
-
- if (var3 != null) {
- return var3.implies(var2);
- } else {
- var3 = this.getPermissions(var1);
- if (var3 == null) {
- return false;
- } else {
- synchronized(this.pdMapping) {
- this.pdMapping.put(var1, var3);
- }
-
- return var3.implies(var2);
- }
- }
- }
-
- public void refresh() {
- }
-
- // $FF: synthetic method
- static Debug access$000() {
- return debug;
- }
- }
-